﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MvcCaja.Core;
using Chilis.Caja.Data.Models;
using System.Web.Routing;

namespace MvcCaja.Controllers
{
    public class CajaController : Controller
    {

        
       
        public ActionResult Index()
        {
            CajaService oCajaService = new CajaService();
            List<MovimientoCaja> oMovimientoCaja = oCajaService.ListarMovimientos();

            BovedaService oBovedaService = new BovedaService();
            List<Boveda> listaBovedas = oBovedaService.ObtenerTodos();
            ViewBag.ListBoveda = new SelectList(listaBovedas, "CodigoBoveda", "DescripcionBoveda"); 

            return View(oMovimientoCaja);
        }

        public ActionResult ListMovimientos(string fecIni, string fecFin, string caja, string empleado)
        {
            CajaService oCajaService = new CajaService();

            List<MovimientoCaja> oMovimientoCaja = oCajaService.ListarMovimientos(fecIni, fecFin, caja, empleado);

            //return View("_ListMovimientos", oMovimientoCaja);
            return PartialView("_ListMovimientos", oMovimientoCaja);
        }



        /// <summary>
        /// JF
        /// </summary>
        /// <returns></returns>
        public ActionResult ListCajas(string buscar)
        {
            CajaService oCajaService = new CajaService();
          //   List<Caja> oMovimientoCaja =new List<Caja>();
            List<CajaTurnoCajero> oMovimientoCaja = new List<CajaTurnoCajero>();
             
            if (buscar.Equals("TODO")){
                  oMovimientoCaja = oCajaService.ListarCajaP();
            }else{
                oMovimientoCaja = oCajaService.ListarCajaP(buscar);
            }

            List<Chilis.Caja.Web.Models.CajaCajTur> oCajaCajTur = ObtenerCajaCajTur(oMovimientoCaja);
          
            //return PartialView("_ListCajas", oMovimientoCaja);
            return PartialView("_ListCajas", oCajaCajTur);
        }


        public List<Chilis.Caja.Web.Models.CajaCajTur> ObtenerCajaCajTur(List<CajaTurnoCajero> oMovimientoCaja)
        {
            List<Chilis.Caja.Web.Models.CajaCajTur> oCajaCajTurLista =   new List<Chilis.Caja.Web.Models.CajaCajTur>();

            Chilis.Caja.Web.Models.CajaCajTur oCajaCajTur = null;
            CajaService oCajaService = new CajaService();

            for (int x = 0; x < oMovimientoCaja.Count; x++)
            {
                oCajaCajTur = new Chilis.Caja.Web.Models.CajaCajTur();

                oCajaCajTur.IdCaja = oMovimientoCaja[x].IdCaja;
                oCajaCajTur.IdCajero = oMovimientoCaja[x].IdCajero;
                oCajaCajTur.IdTurno = oMovimientoCaja[x].IdTurno;
                oCajaCajTur.NombreCaja = oCajaService.obtenerDesCaja(oCajaCajTur.IdCaja);
                oCajaCajTurLista.Add(oCajaCajTur);
            }

            return oCajaCajTurLista;
        }

        public ActionResult ObteneCaja(string idCaja)
        {
            CajaService oCajaService = new CajaService();
            List<Caja> oCaja = oCajaService.ObtenerCaja(idCaja);


             
            var cajeros = oCajaService.obtenerCajeros();
            var turnos = oCajaService.obtenerTurnos();


            ViewBag.Cajeros = new SelectList(cajeros, "IdCajero", "IdCajero");
            ViewBag.Turnos = new SelectList(turnos, "IdTurno", "IdTurno");

            string valor = oCajaService.obtenerCajeroTurno(idCaja);

            ViewBag.CampoA = valor.Split('|')[0]; // "cramirez";
            ViewBag.CampoB = valor.Split('|')[1]; //"T0001";

            return PartialView("ActualizarCaja", oCaja);
        }

         [HttpPost]
      public ActionResult ActualizarCaja(FormCollection form)
        {

            String txtidcaja = form["txtidcaja"].ToString();
            String txtDescaja = form["txtDescaja"].ToString();
            String cajero = form["cajero"].ToString();
            String turno = form["turno"].ToString();

            CajaService oCajaService = new CajaService();
            oCajaService.actualizar(txtidcaja, txtDescaja, cajero, turno);
            return ListCajas("TODO");
        }

         
         public ActionResult EliminarCaja(string idCaja)
         {
             CajaService oCajaService = new CajaService();
             oCajaService.eliminar(idCaja);
             return ListCajas("TODO");
         }

         public ActionResult VerFormRegCaja()
         {

             CajaService oCajaService = new CajaService();

             var cajeros = oCajaService.obtenerCajeros();
             var turnos = oCajaService.obtenerTurnos(); 

             ViewBag.Cajeros = new SelectList(cajeros, "IdCajero", "IdCajero");
             ViewBag.Turnos = new SelectList(turnos, "IdTurno", "IdTurno");      

             return  View("AgregarCaja");
         }


         [HttpPost]
         public ActionResult IngresarCaja(FormCollection form)
        {
                
            String txtDescaja = form["txtDescaja"].ToString();
            String cajero = form["cajero"].ToString();
            String turno = form["turno"].ToString();

            CajaService oCajaService = new CajaService();
            oCajaService.ingresar(txtDescaja, cajero,turno);
            return ListCajas("TODO");
        }

        [HttpPost]
         public ActionResult BuscarCaja(FormCollection form)
         {
             String idCaja = form["txtidcaja"].ToString();
             return ListCajas(idCaja);
         }
        


    }
}
